/**
 * 
 */
package view;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListModel;

import model.ListeErrorModel;
import controller.MenueController;
import datenbank.Initialisierung;

/**
 * Bildet die anstehenden oder archivierten Meldung ab
 * 
 * @date 22.12.2011
 * @author rs
 * @version 1.0
 * 
 */
public class Meldungen extends JPanel {

	private MenueController menueController;
	private Initialisierung initialisierung;
	private ListModel listeModel;
	
	private JPanel buttonLayout;
	private JScrollPane scrollPane;

	private JList listeMeldungen;

	private JButton btnQuittieren;
	private JButton btnArchiv;
	private JButton btnAktuelleMeldungen;

	
	/**
	 * Konstruktor
	 * 
	 * @param menueController
	 */
	public Meldungen(MenueController menueController, Initialisierung initialisierung) {
		super(new BorderLayout(5, 5));
		setBorder(BorderFactory.createTitledBorder("Meldungen"));

		this.menueController = menueController;
		this.initialisierung = initialisierung;
		
		listeModel = new ListeErrorModel(menueController,this.initialisierung);

		initWidgets();

		addWidgets();
		
		addActions();
		
	}

	/**
	 * 
	 */
	private void addActions() {
		btnQuittieren.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				((ListeErrorModel) listeModel).remove2();
				
				// Quittierung an SPS schicken
				menueController.ioSenden(4, '1');
				
			}
		});
		
		btnArchiv.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {		
				// Archivierte Meldungen laden
				((ListeErrorModel) listeModel).archivLaden();
				
				try {
					((ListeErrorModel) listeModel).saveDatei();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}
		});
		
		btnAktuelleMeldungen.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				((ListeErrorModel) listeModel).meldungenLaden();
			}
		});
		
	}

	/**
	 * Widgets an Panel anbinden
	 */
	private void addWidgets() {

		add(BorderLayout.CENTER, scrollPane);
		add(BorderLayout.SOUTH, buttonLayout);

		buttonLayout.add(btnArchiv);
		buttonLayout.add(Box.createHorizontalGlue());
		buttonLayout.add(btnQuittieren);
		buttonLayout.add(btnAktuelleMeldungen);
	}

	/**
	 * Initialisieren der Widgets
	 */
	private void initWidgets() {

		listeMeldungen = new JList(listeModel);
		listeMeldungen.setMinimumSize(new Dimension(450, 100));
		listeMeldungen.setMaximumSize(new Dimension(450, 400));
		listeMeldungen.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 18));

		scrollPane = new JScrollPane(listeMeldungen);
		scrollPane.setPreferredSize(new Dimension(500, 500));

		buttonLayout = new JPanel(new FlowLayout(FlowLayout.RIGHT, 5, 5));

		btnQuittieren = new JButton("Quittieren");
		btnQuittieren.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 25));

		btnArchiv = new JButton("Archiv");
		btnArchiv.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 25));
		
		btnAktuelleMeldungen = new JButton("<html><center>Aktuelle <br> Meldungen</center></html>");
		btnAktuelleMeldungen.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 25));
		
	}

}
